<?php
/**
 * 学年選択チェックボックスコンポーネントモジュール
 */
require_once 'Smarty/Components/Components.php';
require_once 'Smarty/Components/radio.php';
require_once 'Cookie/Name.php';

/**
 * 学年選択チェックボックスコンポーネントクラス
 * Enter description here ...
 * @author shinichi
 *
 */
class Components_AgeRadiobutton extends SmartyComponents_Radio
{
	/** ＪＡＶＡＳＣＲＩＰＴ関数名：クリックイベント（学年チェックボックス） */
	const FUNCTIONNAMEEVENTCLICKAGE = 'EventClickAge';
	/** コントロールネーム：学年選択チェックボックス */
	const NAME_AGE_CHECKBOX = 'AGE';
	/** クッキーネーム：学年選択状態保存用クッキー */
	const NAME_COOKIE_AGE = 'CKAGE';
	/** 学校種別：小学校 */
	const JUNIOR_SCHOOL = 'junior_school';
	/** 学校種別：中学校 */
	const MIDDLE_SCHOOL = 'middle_school';
	/** 学校種別 ：高校*/
	const HIGH_SCHOOL = 'high_school';

	/** 中間ファイルID */
	protected $_sCompileId;
	/** 中間ファイルフォルダー */
	protected $_sCompileDir;

	/**
	* 学年チェックボックスコンポーネントクラス初期化 L393
	* @param $KindSchol 学校種別（クラス定数より）
	* @param $sCompileId 中間ファイルID
	*/
	public function __construct($KindSchol, $sCompileId='')
	{
		$this->_sCompileDir = dirname(__FILE__).'/../../data/templates_c';
		$this->_sCompileId = $sCompileId;

		/** クッキークラス：学年選択状態初期化 */
		$this->_initAgeCookie();

		/** チェックボックスコンポーネントクラス */
		parent::__construct(
				$this->_sCompileDir,
				$this->_sCompileId,
				self::NAME_AGE_CHECKBOX);

		$this->sSeparator = ' ';
		$this->onClick = self::FUNCTIONNAMEEVENTCLICKAGE . '(this);';

		/** 学年選択オプション設定 */
		$this->setAgeOptions($KindSchol);

		/** 選択チェック初期値設定（リクエストによる） */
		$this->_setAgeSelected();
	}

	/**
	* JAVASCRIPT関数名設定
	*/
	protected function _setNameJavascriptFunction()
	{
		/** 学年選択チェックボックスクリックイベント関数名 */
		$this->FunctionNameEventClickAge = self::FUNCTIONNAMEEVENTCLICKAGE;
	}

	/**
	* Requestにより学年の選択状態を設定する
	*/
	protected function _setAgeSelected()
	{
		/*** クッキーデータ文字列初期化 */
		$sCookieValue = '';

		/**
		 * リクエストチェック
		 * フォームリクエスト設定されている場合、これを優先する
		 * そうでない場合、クッキーの設定内容による
		 */
		if ( isset ( $_REQUEST[self::NAME_AGE_CHECKBOX]) ) {
			/** 配列判定 */
			if  (is_array($_REQUEST[self::NAME_AGE_CHECKBOX]) ) {
				/*** 学年選択チェックボックスにチェックを設置 */
				$this->setSelectedAgeOption($_REQUEST[self::NAME_AGE_CHECKBOX]);
				/*** クッキーデータ文字列設定 */
				$sCookieValue = implode(",", $_REQUEST[self::NAME_AGE_CHECKBOX]);
			} else {
				/*** 学年選択チェックボックスにチェックを設置 */
				$this->setSelectedAgeOption($_REQUEST[self::NAME_AGE_CHECKBOX]);
				/*** クッキーデータ文字列設定 */
				$sCookieValue = $_REQUEST[self::NAME_AGE_CHECKBOX];
			}
			/*** 選択状態保存クッキークリア */
			$this->_objCookieAge->deleteCookie();
			$this->_objCookieAge->setValue($sCookieValue);
		} else {
			/** クッキーチェック */
			if ( $this->_objCookieAge->getValue() != '' ) {
				$aryValue = explode(',', $this->_objCookieAge->getValue());
				$this->setSelectedAgeOption($aryValue);
				$_REQUEST[self::NAME_AGE_CHECKBOX] = $aryValue;
			}
		}
	}

	/**
	* 学年選択値設定
	* Enter description here ...
	* @param unknown_type $sSelectedValue
	*/
	public function setSelectedAgeOption($sSelectedValue)
	{
		$this->sSelected = $sSelectedValue;
	}

	/**
	* 学年選択状態保存クッキークラス初期化
	* Enter description here ...
	*/
	protected function _initAgeCookie()
	{
		$this->_objCookieAge = new Lib_Cookie_Name(self::NAME_COOKIE_AGE, 12);
	}

	/**
	* 学年選択オプション設定
	* Enter description here ...
	* @param unknown_type $aryAgeOptions
	*/
	public function setAgeOptions($KindSchol)
	{
		$this->aryOptions
		= $this->_initAgeOptions($KindSchol);
	}

	/**
	* 学年選択オプション設定
	* Enter description here ...
	* @param unknown_type $Kind
	*/
	protected function _initAgeOptions($SchoolKind)
	{
		$aryAgeOptions = array();
		switch	($SchoolKind) {
			case self::JUNIOR_SCHOOL:
				$aryAgeOptions
				= array(
						'U7'=>'１年生',
						'U8'=>'２年生',
						'U9'=>'３年生',
						'U10'=>'４年生',
						'U11'=>'５年生',
						'U12'=>'６年生',
				);
				break;
			case self::MIDDLE_SCHOOL:
				$aryAgeOptions
				= array(
						'U13'=>'１年生',
						'U14'=>'２年生',
						'U15'=>'３年生',
				);
				break;
			case self::HIGH_SCHOOL:
				$aryAgeOptions
				= array(
						'U16'=>'１年生',
						'U17'=>'２年生',
						'U18'=>'３年生',
				);
				break;
		}
		return $aryAgeOptions;
	}
}

class Components_SimpleAgeRadiobutton extends  Components_AgeRadiobutton
{
	/**
	 * コンストラクタ
	 * Enter description here ...
	 * @param unknown_type $KindSchol
	 * @param unknown_type $sCompileId
	 */
	public function __construct($KindSchol, $sCompileId='')
	{
		$this->_sCompileDir = dirname(__FILE__).'/../../data/templates_c';
		$this->_sCompileId = $sCompileId;

		/** チェックボックスコンポーネントクラス */
		SmartyComponents_Checkbox::__construct(
		$this->_sCompileDir,
		$this->_sCompileId,
		self::NAME_AGE_CHECKBOX);

		$this->sSeparator = ' ';

		/** 学年選択オプション設定 */
		$this->setAgeOptions($KindSchol);

	}

}
